package br.com.sgpv2.hibernate.contribuicaoprevidenciaria;

import java.util.Collections;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import br.com.sgpv2.entity.contribuicaoprevidenciaria.ContribuicaoPrevidenciaria;
import br.com.sgpv2.hibernate.infra.SGPGenericDAO;

public class ContribuicaoPrevidenciariaHibernateDAO extends
		SGPGenericDAO<ContribuicaoPrevidenciaria> implements
		ContribuicaoPrevidenciariaRepository {

	private static final String TODOS = "Todos";

	/** Construtor padrão. */
	@Autowired
	public ContribuicaoPrevidenciariaHibernateDAO(
			@Qualifier("sessionFactory") SessionFactory factory) {
		super(ContribuicaoPrevidenciaria.class);
		super.setSessionFactory(factory);
	}

	@Override
	public List<ContribuicaoPrevidenciaria> consultarPorMesAno(String mes,
			String ano) {
		Criteria criteria = createCriteria(ContribuicaoPrevidenciaria.class);
		if (mes != null && !TODOS.equals(mes)) {
			criteria.add(Restrictions.eq("mes", mes));
		}
		if (ano != null && !TODOS.equals(ano)) {
			criteria.add(Restrictions.eq("ano", ano));
		}
		return Collections.checkedList(
				(List<ContribuicaoPrevidenciaria>) criteria.list(),
				ContribuicaoPrevidenciaria.class);
	}
}
